<?xml version="1.0"?>
<doc>
    <assembly>
        <name>IronMeta.Matcher</name>
    </assembly>
    <members>
        <member name="T:IronMeta.Matcher.CharMatcher`1">
            <summary>
            A matcher class for operating on streams of characters.  Provides some utilities for line numbers.
            </summary>
            <typeparam name="TResult">Result type.</typeparam>
        </member>
        <member name="T:IronMeta.Matcher.Matcher`2">
            <summary>
            Base class for IronMeta grammars.
            </summary>
            <typeparam name="TInput">The type of inputs to the grammar.</typeparam>
            <typeparam name="TResult">The type of results of grammar rules.</typeparam>
        </member>
        <member name="F:IronMeta.Matcher.Matcher`2._NON_NULL">
            <summary>
            A utility delegate for filtering an enumerable to return only non-null items.
            </summary>
        </member>
        <member name="M:IronMeta.Matcher.Matcher`2.#ctor">
            <summary>
            Constructor.
            </summary>
        </member>
        <member name="M:IronMeta.Matcher.Matcher`2.#ctor(System.Boolean)">
            <summary>
            Constructor.
            </summary>
            <param name="handle_left_recursion">Whether or not the matcher should handle left-recursion.</param>
        </member>
        <member name="M:IronMeta.Matcher.Matcher`2.GetMatch(System.Collections.Generic.IEnumerable{`0},System.Action{IronMeta.Matcher.Memo{`0,`1},System.Int32,System.Collections.Generic.IEnumerable{IronMeta.Matcher.MatchItem{`0,`1}}})">
            <summary>
            Try to match the input.
            </summary>
            <param name="input">The input to be matched.</param>
            <param name="production">The top-level grammar production (rule) of the generated parser class to use.</param>
            <returns>The result of the match.</returns>
        </member>
        <member name="M:IronMeta.Matcher.Matcher`2._Thunk``1(System.Func{``0,System.Collections.Generic.IEnumerable{`1}},``0)">
            <summary>
            Calls an action that returns a list of results.
            </summary>
        </member>
        <member name="M:IronMeta.Matcher.Matcher`2._Thunk``1(System.Func{``0,`1},``0)">
            <summary>
            Calls an action that returns a single result.
            </summary>
        </member>
        <member name="M:IronMeta.Matcher.Matcher`2._MemoCall(IronMeta.Matcher.Memo{`0,`1},System.String,System.Int32,System.Action{IronMeta.Matcher.Memo{`0,`1},System.Int32,System.Collections.Generic.IEnumerable{IronMeta.Matcher.MatchItem{`0,`1}}},System.Collections.Generic.IEnumerable{IronMeta.Matcher.MatchItem{`0,`1}})">
            <summary>
            Call a grammar production, using memoization and handling left-recursion.
            </summary>
            <param name="memo">The memo for the current match.</param>
            <param name="ruleName">The name of the production.</param>
            <param name="index">The current index in the input stream.</param>
            <param name="production">The production itself.</param>
            <param name="args">Arguments to the production (can be null).</param>
            <returns>The result of the production at the given input index.</returns>
        </member>
        <member name="M:IronMeta.Matcher.Matcher`2._ParseLiteralString(IronMeta.Matcher.Memo{`0,`1},System.Int32@,System.String)">
            <summary>
            Matches a literal string (only used with matchers on a <c>char</c> enumerable).
            </summary>
            <param name="memo">Memo.</param>
            <param name="index">Index.</param>
            <param name="str">String to match.</param>
        </member>
        <member name="M:IronMeta.Matcher.Matcher`2._ParseLiteralChar(IronMeta.Matcher.Memo{`0,`1},System.Int32@,System.Char)">
            <summary>
            Matches a literal char (only used with matchers on a <c>char</c> enumerable).
            </summary>
            <param name="memo">Memo.</param>
            <param name="index">Index.</param>
            <param name="ch">Character to match.</param>
        </member>
        <member name="M:IronMeta.Matcher.Matcher`2._ParseLiteralObj(IronMeta.Matcher.Memo{`0,`1},System.Int32@,System.Object)">
            <summary>
            Matches a literal object.
            </summary>
            <param name="memo">Memo.</param>
            <param name="index">Index.</param>
            <param name="obj">Object to match.</param>
        </member>
        <member name="M:IronMeta.Matcher.Matcher`2.ObjectEquals(System.Object,System.Object)">
            <summary>
            Checks for anonymous literals in the rule before matching against input object.
            </summary>
            <param name="expected">Expected object.  May be an anonymously-typed object.</param>
            <param name="encountered">Object encountered in the input.</param>
            <returns></returns>
        </member>
        <member name="M:IronMeta.Matcher.Matcher`2._ParseLiteralArgs(IronMeta.Matcher.Memo{`0,`1},System.Int32@,System.Int32@,System.Object,System.Collections.Generic.IEnumerable{IronMeta.Matcher.MatchItem{`0,`1}})">
            <summary>
            Matches a literal object in an argument stream.
            </summary>
            <param name="memo">Memo.</param>
            <param name="item_index">Item index.</param>
            <param name="input_index">Input index.</param>
            <param name="obj">Object to match.</param>
            <param name="args">Argument stream.</param>
        </member>
        <member name="M:IronMeta.Matcher.Matcher`2._ParseInputClass(IronMeta.Matcher.Memo{`0,`1},System.Int32@,System.Char[])">
            <summary>
            Matches a set of characters.  Only used for matchers over <c>char</c> enumerables.
            </summary>
            <param name="memo">Memo.</param>
            <param name="index">Index.</param>
            <param name="chars">Characters to match.</param>
        </member>
        <member name="M:IronMeta.Matcher.Matcher`2._ParseInputClassArgs(IronMeta.Matcher.Memo{`0,`1},System.Int32@,System.Int32@,System.Collections.Generic.IEnumerable{IronMeta.Matcher.MatchItem{`0,`1}},System.Char[])">
            <summary>
            Matches a set of characters in an argument stream.
            </summary>
            <param name="memo">Memo.</param>
            <param name="item_index">Item index.</param>
            <param name="input_index">Input index.</param>
            <param name="args">Argument stream.</param>
            <param name="chars">Characters to match.</param>
        </member>
        <member name="M:IronMeta.Matcher.Matcher`2._ParseAny(IronMeta.Matcher.Memo{`0,`1},System.Int32@)">
            <summary>
            Matches any input.
            </summary>
            <param name="memo">Memo.</param>
            <param name="index">Index.</param>
        </member>
        <member name="M:IronMeta.Matcher.Matcher`2._ParseAnyArgs(IronMeta.Matcher.Memo{`0,`1},System.Int32@,System.Int32@,System.Collections.Generic.IEnumerable{IronMeta.Matcher.MatchItem{`0,`1}})">
            <summary>
            Matches any input in an argument stream.
            </summary>
            <param name="memo">Memo.</param>
            <param name="item_index">Item index.</param>
            <param name="input_index">Input index.</param>
            <param name="args">Argument stream.</param>
        </member>
        <member name="P:IronMeta.Matcher.Matcher`2.HandleLeftRecursion">
            <summary>
            Whether or not the matcher should detect and process left-recursive rules correctly.
            Setting this to false will make matching run faster, but go into an infinite loop if there is a left-recursive rule in your grammar.
            </summary>
        </member>
        <member name="T:IronMeta.Matcher.Matcher`2.MatcherException">
            <summary>
            Exception class for extraordinary parsing errors.
            </summary>
        </member>
        <member name="M:IronMeta.Matcher.Matcher`2.MatcherException.#ctor(System.String)">
            <summary>
            Constructor.
            </summary>
            <param name="message">Message.</param>
        </member>
        <member name="M:IronMeta.Matcher.Matcher`2.MatcherException.#ctor(System.Int32,System.String)">
            <summary>
            Constructor.
            </summary>
            <param name="index">Index.</param>
            <param name="message">Message.</param>
        </member>
        <member name="P:IronMeta.Matcher.Matcher`2.MatcherException.Index">
            <summary>
            Position in the input at which the error happened.
            </summary>
        </member>
        <member name="M:IronMeta.Matcher.CharMatcher`1.#ctor">
            <summary>
            Constructor.
            </summary>
        </member>
        <member name="M:IronMeta.Matcher.CharMatcher`1.#ctor(System.Boolean)">
            <summary>
            Constructor.
            </summary>
            <param name="handle_left_recursion">Whether or not to handle left recursion.</param>
        </member>
        <member name="M:IronMeta.Matcher.CharMatcher`1.Input(IronMeta.Matcher.MatchItem{System.Char,`0})">
            <summary>
            Utility function for getting the input that matched from a variable.
            </summary>
            <param name="item">Variable that matched.</param>
            <returns>The input that matched the variable, as a string.</returns>
        </member>
        <member name="M:IronMeta.Matcher.CharMatcher`1.Trimmed(IronMeta.Matcher.MatchItem{System.Char,`0})">
            <summary>
            Utility function for getting the input that matched from a variable.
            </summary>
            <param name="item">Variable that matched.</param>
            <returns>The input that matched the variable, with whitspace trimmed.</returns>
        </member>
        <member name="M:IronMeta.Matcher.CharMatcher`1.GetLine(IronMeta.Matcher.Memo{System.Char,`0},System.Int32,System.Int32@)">
            <summary>
            Gets the line containing a particular index in the input.
            </summary>
            <param name="memo">The memo object from the match (can be obtained from the match result object's <c>Memo</c> property).</param>
            <param name="pos">The index in the input.</param>
            <param name="offset">The offset of the position after the beginning of the line.</param>
            <returns>The line containing a particular input index.</returns>
        </member>
        <member name="M:IronMeta.Matcher.CharMatcher`1.GetLineNumber(IronMeta.Matcher.Memo{System.Char,`0},System.Int32)">
            <summary>
            Gets the line number of the line that contains a particular index in the input.
            </summary>
            <param name="memo">The memo used for the match.</param>
            <param name="pos">The index in the input.</param>
            <returns>The number of the line that contains the index.</returns>
        </member>
        <member name="M:IronMeta.Matcher.CharMatcher`1.MakeLines(IronMeta.Matcher.Memo{System.Char,`0})">
            <summary>
            Finds line endings.
            </summary>
        </member>
        <member name="T:IronMeta.Matcher.Slice`1">
            <summary>
            A utility class that implements a slice of an enumerable.
            Uses copy-on-write semantics; if the slice's data is modified then a copy is taken of the original data and the copy modified instead of the original.
            </summary>
            <typeparam name="T">The enumerable's data type.</typeparam>
        </member>
        <member name="M:IronMeta.Matcher.Slice`1.#ctor(System.Collections.Generic.IEnumerable{`0},System.Int32,System.Int32)">
            <summary>
            Constructor.
            </summary>
            <param name="source">The source enumerable.</param>
            <param name="start">The start position.</param>
            <param name="count">The number of items in the slice.</param>
        </member>
        <member name="M:IronMeta.Matcher.Slice`1.ToString">
            <summary>
            String representation (mainly used for debugging).
            </summary>
            <returns></returns>
        </member>
        <member name="M:IronMeta.Matcher.Slice`1.IndexOf(`0)">
            <summary>
            The index of the item in the slice.
            </summary>
            <param name="item">The item to search for.</param>
            <returns>-1 if the item is not found.</returns>
        </member>
        <member name="M:IronMeta.Matcher.Slice`1.Insert(System.Int32,`0)">
            <summary>
            Inserts an item into the slice.  Will not modify the source enumerable.
            </summary>
            <param name="index">The index at which to insert.</param>
            <param name="item">The item to insert.</param>
        </member>
        <member name="M:IronMeta.Matcher.Slice`1.RemoveAt(System.Int32)">
            <summary>
            Removes the item at a given index in the slice.  Will not modify the source enumerable.
            </summary>
            <param name="index">The index of the item to remove.</param>
        </member>
        <member name="M:IronMeta.Matcher.Slice`1.Add(`0)">
            <summary>
            Adds an item to the slice.  Will not modify the source enumerable.
            </summary>
            <param name="item">Item to add.</param>
        </member>
        <member name="M:IronMeta.Matcher.Slice`1.Clear">
            <summary>
            Clears the slice.  Will not modify the source enumerable.
            </summary>
        </member>
        <member name="M:IronMeta.Matcher.Slice`1.Contains(`0)">
            <summary>
            Whether or not the slice contains a given item.
            </summary>
            <param name="item">Item.</param>
        </member>
        <member name="M:IronMeta.Matcher.Slice`1.CopyTo(`0[],System.Int32)">
            <summary>
            Copies the slice to an array.
            </summary>
            <param name="array">Array to copy to.</param>
            <param name="arrayIndex">Index in the array to start copying at.</param>
        </member>
        <member name="M:IronMeta.Matcher.Slice`1.Remove(`0)">
            <summary>
            Removes an item from the slice.  Will not modify the source enumerable.
            </summary>
            <param name="item">Item to remove.</param>
            <returns>Whether or not the item was removed.</returns>
        </member>
        <member name="M:IronMeta.Matcher.Slice`1.GetEnumerator">
            <summary>
            Get an enumerator over the slice.
            </summary>
        </member>
        <member name="M:IronMeta.Matcher.Slice`1.System#Collections#IEnumerable#GetEnumerator">
            <summary>
            Gets a non-generic enumerator of the slice.
            </summary>
        </member>
        <member name="P:IronMeta.Matcher.Slice`1.Item(System.Int32)">
            <summary>
            Indexer.  Will not modify the source enumerable.
            </summary>
            <param name="index">Index.</param>
            <returns>The item at the given index.</returns>
        </member>
        <member name="P:IronMeta.Matcher.Slice`1.Count">
            <summary>
            Number of items in the slice.
            </summary>
        </member>
        <member name="P:IronMeta.Matcher.Slice`1.IsReadOnly">
            <summary>
            Whether or not the slice is read-only.
            </summary>
        </member>
        <member name="T:IronMeta.Matcher.Slice`1.SliceEnumerator">
            <summary>
            Enumerator for slices.
            </summary>
        </member>
        <member name="M:IronMeta.Matcher.Slice`1.SliceEnumerator.#ctor(IronMeta.Matcher.Slice{`0})">
            <summary>
            Constructor.
            </summary>
            <param name="slice">Slice to enumerate over.</param>
        </member>
        <member name="M:IronMeta.Matcher.Slice`1.SliceEnumerator.Dispose">
            <summary>
            Dispose.
            </summary>
        </member>
        <member name="M:IronMeta.Matcher.Slice`1.SliceEnumerator.MoveNext">
            <summary>
            Move to the next item in the enumerable.
            </summary>
            <returns>Whether or not the move succeeded.</returns>
        </member>
        <member name="M:IronMeta.Matcher.Slice`1.SliceEnumerator.Reset">
            <summary>
            Reset the enumerator to the beginning of the enumerable.
            </summary>
        </member>
        <member name="P:IronMeta.Matcher.Slice`1.SliceEnumerator.Current">
            <summary>
            The current value.
            </summary>
        </member>
        <member name="P:IronMeta.Matcher.Slice`1.SliceEnumerator.System#Collections#IEnumerator#Current">
            <summary>
            The current object.
            </summary>
        </member>
        <member name="T:IronMeta.Matcher.MatchResult`2">
            <summary>
            Holds the results of trying to parse an input stream.
            </summary>
        </member>
        <member name="M:IronMeta.Matcher.MatchResult`2.#ctor">
            <summary>
            Constructor.
            </summary>
        </member>
        <member name="M:IronMeta.Matcher.MatchResult`2.#ctor(IronMeta.Matcher.Matcher{`0,`1},IronMeta.Matcher.Memo{`0,`1},System.Boolean,System.Int32,System.Int32,System.Collections.Generic.IEnumerable{`1},System.String,System.Int32)">
            <summary>
            Constructor.
            </summary>
        </member>
        <member name="P:IronMeta.Matcher.MatchResult`2.Matcher">
            <summary>
            The matcher that generated this result.
            </summary>
        </member>
        <member name="P:IronMeta.Matcher.MatchResult`2.Memo">
            <summary>
            The memo object that holds the match state.
            </summary>
        </member>
        <member name="P:IronMeta.Matcher.MatchResult`2.Success">
            <summary>
            Whether or not the match succeeded.
            </summary>
        </member>
        <member name="P:IronMeta.Matcher.MatchResult`2.StartIndex">
            <summary>
            The index in the input stream at which the match started (usually 0).
            </summary>
        </member>
        <member name="P:IronMeta.Matcher.MatchResult`2.NextIndex">
            <summary>
            The index in the input stream after the last item matched.
            </summary>
        </member>
        <member name="P:IronMeta.Matcher.MatchResult`2.Results">
            <summary>
            The result of the match; possibly as a list.
            Will be null if the match did not succeed.
            </summary>
        </member>
        <member name="P:IronMeta.Matcher.MatchResult`2.Result">
            <summary>
            The last result in the result list.  Will throw if the match did not succeed.
            </summary>
        </member>
        <member name="P:IronMeta.Matcher.MatchResult`2.Error">
            <summary>
            The error that caused the match to fail, if it failed.
            </summary>
        </member>
        <member name="P:IronMeta.Matcher.MatchResult`2.ErrorIndex">
            <summary>
            The index in the input stream at which the error occurred.
            </summary>
        </member>
        <member name="T:IronMeta.Matcher.MatchItem`2">
            \internal
            <summary>
            Used internally in matchers in several situations:
             - As the result of a production, stores a range of input, and the results of the match.
             - As a parameter to a production, can hold an item of input, a range of input, or a production.
            </summary>
        </member>
        <member name="F:IronMeta.Matcher.MatchItem`2.Production">
            <summary>
            The production that this item is passing.
            </summary>
        </member>
        <member name="F:IronMeta.Matcher.MatchItem`2.ProductionName">
            <summary>
            The name of the production that this item is passing.
            </summary>
        </member>
        <member name="F:IronMeta.Matcher.MatchItem`2.Results">
            <summary>
            The results that this item holds.
            </summary>
        </member>
        <member name="M:IronMeta.Matcher.MatchItem`2.#ctor">
            <summary>
            Default constructor.
            </summary>
        </member>
        <member name="M:IronMeta.Matcher.MatchItem`2.#ctor(`0)">
            <summary>
            Constructor.
            </summary>
            <param name="input">A single input to hold.</param>
        </member>
        <member name="M:IronMeta.Matcher.MatchItem`2.#ctor(`0,`1)">
            <summary>
            Constructor.
            </summary>
            <param name="input">A single input to hold.</param>
            <param name="result">The result of the input.</param>
        </member>
        <member name="M:IronMeta.Matcher.MatchItem`2.#ctor(System.Collections.Generic.IEnumerable{`0})">
            <summary>
            Constructor.
            </summary>
            <param name="inputs">Inputs to hold.</param>
        </member>
        <member name="M:IronMeta.Matcher.MatchItem`2.#ctor(System.Collections.Generic.IEnumerable{`0},System.Collections.Generic.IEnumerable{`1})">
            <summary>
            Constructor.
            </summary>
            <param name="inputs">Inputs to hold.</param>
            <param name="results">The corresponding results.</param>
        </member>
        <member name="M:IronMeta.Matcher.MatchItem`2.#ctor(System.Int32,System.Int32,System.Collections.Generic.IEnumerable{`0},System.Collections.Generic.IEnumerable{`1},System.Boolean)">
            <summary>
            Constructor.
            </summary>
            <param name="start">Start position in the match (not necessarily in the given inputs).</param>
            <param name="next">Next position in the match (not necessarily in the given inputs).</param>
            <param name="inputs">Input enumerable.</param>
            <param name="results">Result enumerable.</param>
            <param name="relative">Whether or not the start and next parameters are relative to the given input enumerable, or independent of it.</param>
        </member>
        <member name="M:IronMeta.Matcher.MatchItem`2.#ctor(System.Int32,System.Collections.Generic.IEnumerable{`0})">
            <summary>
            Constructor.
            </summary>
            <param name="start">Start position in the match.</param>
            <param name="inputs">Inputs to hold.</param>
        </member>
        <member name="M:IronMeta.Matcher.MatchItem`2.#ctor(System.Int32,System.Int32,`0,`1)">
            <summary>
            Constructor.
            </summary>
            <param name="start">Start position in the match.</param>
            <param name="next">Next position in the match.</param>
            <param name="input">A single input to hold.</param>
            <param name="result">A single result to hold.</param>
        </member>
        <member name="M:IronMeta.Matcher.MatchItem`2.#ctor(System.Action{IronMeta.Matcher.Memo{`0,`1},System.Int32,System.Collections.Generic.IEnumerable{IronMeta.Matcher.MatchItem{`0,`1}}})">
            <summary>
            Constructor.
            </summary>
            <param name="p">Production to pass.</param>
        </member>
        <member name="M:IronMeta.Matcher.MatchItem`2.ToString">
            <summary>
            String representation.  This is used to memoize rules with variable arguments.
            </summary>
        </member>
        <member name="M:IronMeta.Matcher.MatchItem`2.op_Implicit(IronMeta.Matcher.MatchItem{`0,`1})~`0">
            <summary>
            Implicit conversion to input type.
            </summary>
            <param name="item">Item.</param>
        </member>
        <member name="M:IronMeta.Matcher.MatchItem`2.op_Implicit(IronMeta.Matcher.MatchItem{`0,`1})~`1">
            <summary>
            Implicit conversion to result type.
            </summary>
            <param name="item">Item.</param>
        </member>
        <member name="P:IronMeta.Matcher.MatchItem`2.StartIndex">
            <summary>
            The starting index in the match (not necessarily in the item's particular input).
            </summary>
        </member>
        <member name="P:IronMeta.Matcher.MatchItem`2.NextIndex">
            <summary>
            The next index in the match (not necessarily in the item's particular input).
            </summary>
        </member>
        <member name="P:IronMeta.Matcher.MatchItem`2.Inputs">
            <summary>
            Returns an enumerable representing only this item's inputs (possibly a subset of InputEnumerable).
            </summary>
        </member>
        <member name="P:IronMeta.Matcher.MatchItem`2.InputEnumerable">
            <summary>
            The entire input enumerable that this item takes its input from.
            </summary>
        </member>
        <member name="T:IronMeta.Matcher.TypeExtension">
            <summary>
            Extension class to determine if a type is anonymous; cribbed from http://stackoverflow.com/questions/1650681/determining-whether-a-type-is-an-anonymous-type
            </summary>
        </member>
        <member name="M:IronMeta.Matcher.TypeExtension.IsAnonymousType(System.Type)">
            <summary>
            Heuristic test to determine whether a type is anonymous.
            </summary>
            <param name="type">The type in question.</param>
        </member>
        <member name="T:IronMeta.Matcher.Memo`2">
            <summary>
            Holds memoization and left-recursion state during a parse.
            </summary>
            <typeparam name="TInput">The input type.</typeparam>
            <typeparam name="TResult">The result type.</typeparam>
        </member>
        <member name="M:IronMeta.Matcher.Memo`2.#ctor(System.Collections.Generic.IEnumerable{`0})">
            <summary>
            Constructor.
            </summary>
            <param name="input">Input to be matches.</param>
        </member>
        <member name="M:IronMeta.Matcher.Memo`2.ClearMemoTable">
            <summary>
            Allows the memo tables and left-recursion records to be garbage collect.
            </summary>
        </member>
        <member name="M:IronMeta.Matcher.Memo`2.Memoize(System.String,System.Int32,IronMeta.Matcher.MatchItem{`0,`1})">
            <summary>
            Memoize the result of a production at a given index.
            </summary>
            <param name="rule">The production name.</param>
            <param name="index">The input position.</param>
            <param name="item">The result of the parse.</param>
        </member>
        <member name="M:IronMeta.Matcher.Memo`2.ForgetMemo(System.String,System.Int32)">
            <summary>
            Forget a memoized result.
            </summary>
            <param name="rule">The production name.</param>
            <param name="index">The input position.</param>
        </member>
        <member name="M:IronMeta.Matcher.Memo`2.TryGetMemo(System.String,System.Int32,IronMeta.Matcher.MatchItem{`0,`1}@)">
            <summary>
            Find the memo of a given rule call.
            </summary>
            <param name="rule">The name of the rule.</param>
            <param name="index">The input position.</param>
            <param name="item">The result.</param>
            <returns>True if there is a memo record for the rule at the index.</returns>
        </member>
        <member name="M:IronMeta.Matcher.Memo`2.StartLRRecord(System.String,System.Int32,IronMeta.Matcher.LRRecord{IronMeta.Matcher.MatchItem{`0,`1}})">
            <summary>
            Start a left-recursion record for a rule at a given index.
            </summary>
            <param name="rule">The name of the rule.</param>
            <param name="index">The input position.</param>
            <param name="record">The new left-recursion record.</param>
        </member>
        <member name="M:IronMeta.Matcher.Memo`2.ForgetLRRecord(System.String,System.Int32)">
            <summary>
            Discard a left-recursion record for a rule at a given index.
            </summary>
            <param name="rule">The name of the rule.</param>
            <param name="index">The input position.</param>
        </member>
        <member name="M:IronMeta.Matcher.Memo`2.TryGetLRRecord(System.String,System.Int32,IronMeta.Matcher.LRRecord{IronMeta.Matcher.MatchItem{`0,`1}}@)">
            <summary>
            Get the left-recursion record for a rule at a given index.
            </summary>
            <param name="rule">The name of the rule.</param>
            <param name="index">The input position.</param>
            <param name="record">The left-recursion record.</param>
            <returns>True if there is a left-recursion record for the rule at the index.</returns>
        </member>
        <member name="M:IronMeta.Matcher.Memo`2.AddError(System.Int32,System.Func{System.String})">
            <summary>
            Sets the current error, if it is beyond or equal to the previous error.
            </summary>
            <param name="pos">Position of the error.</param>
            <param name="message">Function to generate the message (deferred until the end for better performance).</param>
        </member>
        <member name="M:IronMeta.Matcher.Memo`2.AddError(System.Int32,System.String)">
            <summary>
            Sets the current error if it is beyond or equal to the previous error.
            </summary>
            <param name="pos">Position of the error.</param>
            <param name="message">Message.</param>
        </member>
        <member name="M:IronMeta.Matcher.Memo`2.ClearErrors">
            <summary>
            Clears all errors for a given position.
            </summary>
        </member>
        <member name="P:IronMeta.Matcher.Memo`2.Input">
            <summary>
            The input stream for the grammar to parse.
            </summary>
        </member>
        <member name="P:IronMeta.Matcher.Memo`2.InputEnumerable">
            <summary>
            The input enumerable for this match.
            </summary>
        </member>
        <member name="P:IronMeta.Matcher.Memo`2.InputList">
            <summary>
            The input enumerable for this match (<see cref="P:IronMeta.Matcher.Memo`2.InputEnumerable"/>) as an <c>IList&lt;&gt;</c>.
            Is <c>null</c> if the input enumerable is not an <c>IList&lt;&gt;</c>.
            </summary>
        </member>
        <member name="P:IronMeta.Matcher.Memo`2.InputString">
            <summary>
            The input enumerable for this match (<see cref="P:IronMeta.Matcher.Memo`2.InputEnumerable"/>) as a <c>string</c>.
            Is <c>null</c> if the input enumerable is not a <see cref="T:System.String"/>.
            </summary>
        </member>
        <member name="P:IronMeta.Matcher.Memo`2.Results">
            <summary>
            The result stack used while matching.
            </summary>
        </member>
        <member name="P:IronMeta.Matcher.Memo`2.ArgResults">
            <summary>
            The result stack used while matching arguments.
            </summary>
        </member>
        <member name="P:IronMeta.Matcher.Memo`2.CallStack">
            <summary>
            The call stack used while matching.
            </summary>
        </member>
        <member name="P:IronMeta.Matcher.Memo`2.Properties">
            <summary>
            Used to pass properties specific to derived matcher classes.
            </summary>
        </member>
        <member name="P:IronMeta.Matcher.Memo`2.LastError">
            <summary>
            The error message from the rightmost error encountered while matching.
            Is <c>null</c> if there are no errors.
            <seealso cref="P:IronMeta.Matcher.Memo`2.LastErrorIndex"/>
            </summary>
        </member>
        <member name="P:IronMeta.Matcher.Memo`2.LastErrorIndex">
            <summary>
            The position in the input enumerable of the rightmost error encountered while matching.
            <seealso cref="P:IronMeta.Matcher.Memo`2.LastError"/>
            </summary>
        </member>
        <member name="T:IronMeta.Matcher.LRRecord`1">
            <summary>
            A record of the current state of left-recursion handling for a rule.
            </summary>
        </member>
        <member name="P:IronMeta.Matcher.LRRecord`1.LRDetected">
            <summary>
            Whether or not left-recursion has been detected for this production.
            </summary>
        </member>
        <member name="P:IronMeta.Matcher.LRRecord`1.NumExpansions">
            <summary>
            How many expansions we have generated.
            </summary>
        </member>
        <member name="P:IronMeta.Matcher.LRRecord`1.CurrentExpansion">
            <summary>
            The name of the current expansion.
            </summary>
        </member>
        <member name="P:IronMeta.Matcher.LRRecord`1.CurrentNextIndex">
            <summary>
            The farthest extent of the match.
            </summary>
        </member>
        <member name="P:IronMeta.Matcher.LRRecord`1.CurrentResult">
            <summary>
            The result of the last expansion.
            </summary>
        </member>
        <member name="T:IronMeta.Matcher.ErrorRec">
            <summary>
            Stores information about errors.
            </summary>
        </member>
        <member name="P:IronMeta.Matcher.ErrorRec.Pos">
            <summary>
            Input index of the error.
            </summary>
        </member>
        <member name="P:IronMeta.Matcher.ErrorRec.Func">
            <summary>
            The function used to generate the error message (use a lambda to defer string processing until the error needs to be printed).
            </summary>
        </member>
        <member name="P:IronMeta.Matcher.ErrorRec.Message">
            <summary>
            The error message.
            </summary>
        </member>
    </members>
</doc>
